///
/// \file     mdl_dao.hpp
/// \brief    dao for a mdl file based persistance
/// \author   Frederic Manisse
/// \version  1.0
///
/// dao for a mdl file based persistance
///
#ifndef LAURENA_MDL_DAO_H
#define LAURENA_MDL_DAO_H

/********************************************************************************/
/*                      pragma once support                                     */ 
/********************************************************************************/ 
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif

/********************************************************************************/ 
/*              dependencies                                                    */ 
/********************************************************************************/ 
#include <laurena/laurena.hpp>

/********************************************************************************/ 
/*              opening namespace(s)                                            */ 
/********************************************************************************/ 
namespace laurena {
namespace mdl {

/***********************************************************************************/ 
/* Class mdl_dao                                                                   */ 
/***********************************************************************************/ 

class mdl_dao : public file_dao
{
public:

    /****************************************************************************/ 
    /*          typedef                                                         */ 
    /****************************************************************************/ 
    typedef std::shared_ptr<mdl_dao>       sptr;

    /****************************************************************************/ 
    /*          destructor, constructors                                        */ 
    /****************************************************************************/ 
    mdl_dao (const descriptor& desc, const std::string& directory);
    virtual ~mdl_dao();

    /****************************************************************************/ 
    /*          new virtual functions                                           */ 
    /****************************************************************************/ 
    // return file extension
    virtual const std::string&          extension ();
    virtual std::shared_ptr<oarchive>   formatter ();
    virtual std::shared_ptr<iarchive>   parser    ();
};

/********************************************************************************/ 
/*          bottom file block                                                   */ 
/********************************************************************************/ 

}}
#endif
//end of file